package com.selune.online.ordering.system.project.api.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.selune.online.ordering.system.project.api.base.entity.GoodsInfo;
import com.selune.online.ordering.system.project.api.pojo.goods.dto.GoodsSearchDTO;
import com.selune.online.ordering.system.project.api.pojo.goods.dto.GoodsUpdateDTO;
import java.util.List;

/**
 * @author xiaoyp
 * @date 2020/2/27
 */

public interface GoodsInfoMapper extends BaseMapper<GoodsInfo> {
	
	/**
	 * 更新商品信息
	 *
	 * @param goodsId        商品id，用于查询
	 * @param goodsUpdateDTO 商品更新DTO
	 * @return int
	 */
	int updateGoodsById(Long goodsId, GoodsUpdateDTO goodsUpdateDTO);
	
	/**
	 * 商品上架
	 *
	 * @param goodsId 商品id
	 * @return int
	 */
	int onSaleGoods(Long goodsId);
	
	/**
	 * 商品下架
	 *
	 * @param goodsId 商品id
	 * @return int
	 */
	int offSaleGoods(Long goodsId);
	
	/**
	 * 商品列表
	 *
	 * @param goodsSearchDTO 查询条件
	 * @return List
	 */
	List<GoodsInfo> listGoods(GoodsSearchDTO goodsSearchDTO);
	
	/**
	 * 通过goodsId查查询商品信息
	 *
	 * @param goodsId 商品id
	 * @return 商品信息
	 */
	GoodsInfo findByGoodsId(Long goodsId);
	
	/**
	 * 通过goodsId减少商品库存
	 *
	 * @param goodsId 商品id
	 * @param stock   减少库存
	 * @return int
	 */
	int decreaseStock(Long goodsId, Long stock);
	
	/**
	 * 通过goodsId增加商品库存
	 *
	 * @param goodsId 商品id
	 * @param stock   增加库存
	 * @return int
	 */
	int increaseStock(Long goodsId, Long stock);
}
